/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

/*
 * dlgMostrarRutaOptima.java
 *
 * Created on Oct 30, 2011, 10:38:47 PM
 */

package visual.Despacho;

import aentity.aePuntoUbicacion;
import bentity.beAlmacen;
import bentity.beEntrada;
import bentity.beUbicacion;
import blogic.blAlmacen;
import blogic.blHelper;
import java.awt.Graphics;
import java.awt.image.BufferStrategy;
import java.util.ArrayList;
import visual.Seguridad.visualHelper;

/**
 *
 * @author renzo
 */
public class dlgMostrarRutaOptima extends javax.swing.JDialog {
    private boolean esPrimeraVez = true;
    private BufferStrategy bfs = null;
    private ArrayList<beUbicacion> ordenOptimoUbics = null;
    private ArrayList<beEntrada> entradas = null;
    private ArrayList<aePuntoUbicacion> ptosRutaOptima = null;
    private blHelper blh = new blHelper();
    private beAlmacen datosAlmacen = null;
    /** Creates new form dlgMostrarRutaOptima */
    public dlgMostrarRutaOptima(dlgConsultarRutaOptima parent, boolean modal) {
        super((java.awt.Frame)null, modal);
        initComponents();
        try{
            this.entradas = (new blAlmacen()).buscarObjsEntrada();
            this.ordenOptimoUbics = parent.getOrdenOptimoUbics();
            this.ptosRutaOptima = parent.getPtosRutaOptima();
            this.datosAlmacen = blh.obtenerDatosAlmacen();
        }
        catch(Exception e){
            e.printStackTrace();
            visualHelper.mostrarMensajeError("Ocurrió un error al mostrar la ruta óptima.");
        }
        visualHelper.centrarDialogoEnPantalla(this);
        repaint();
    }

    /** This method is called from within the constructor to
     * initialize the form.
     * WARNING: Do NOT modify this code. The content of this method is
     * always regenerated by the Form Editor.
     */
    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
    private void initComponents() {

        lblTitulo = new javax.swing.JLabel();
        pnlLeyenda = new javax.swing.JPanel();
        lblTipoPallet1 = new javax.swing.JLabel();
        lblUbicacionesLibres = new javax.swing.JLabel();
        lblUbicacionesIngresadas = new javax.swing.JLabel();
        pnlRojo = new javax.swing.JPanel();
        pnlVerde = new javax.swing.JPanel();

        setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);
        setTitle("Thor Store - Mostrar ruta óptima");
        setAlwaysOnTop(true);
        setMinimumSize(new java.awt.Dimension(850, 600));
        setModal(true);
        getContentPane().setLayout(null);

        lblTitulo.setFont(new java.awt.Font("DejaVu Sans", 0, 36));
        lblTitulo.setForeground(new java.awt.Color(0, 0, 0));
        lblTitulo.setText("Consultar ruta óptima");
        getContentPane().add(lblTitulo);
        lblTitulo.setBounds(110, 10, 410, 43);

        pnlLeyenda.setBorder(javax.swing.BorderFactory.createTitledBorder(javax.swing.BorderFactory.createLineBorder(new java.awt.Color(0, 0, 0)), "Leyenda", javax.swing.border.TitledBorder.DEFAULT_JUSTIFICATION, javax.swing.border.TitledBorder.DEFAULT_POSITION, new java.awt.Font("Dialog", 0, 14), new java.awt.Color(0, 0, 0))); // NOI18N
        pnlLeyenda.setForeground(new java.awt.Color(0, 0, 0));
        pnlLeyenda.setLayout(null);

        lblTipoPallet1.setFont(new java.awt.Font("Dialog", 0, 12));
        lblTipoPallet1.setForeground(new java.awt.Color(0, 0, 0));
        lblTipoPallet1.setText("Pallet");
        pnlLeyenda.add(lblTipoPallet1);
        lblTipoPallet1.setBounds(340, 380, 80, 15);

        lblUbicacionesLibres.setFont(new java.awt.Font("Dialog", 0, 12));
        lblUbicacionesLibres.setForeground(new java.awt.Color(0, 0, 0));
        lblUbicacionesLibres.setText("Ubicaciones sin considerarse en la ruta óptima.");
        pnlLeyenda.add(lblUbicacionesLibres);
        lblUbicacionesLibres.setBounds(50, 20, 300, 20);

        lblUbicacionesIngresadas.setFont(new java.awt.Font("Dialog", 0, 12));
        lblUbicacionesIngresadas.setForeground(new java.awt.Color(0, 0, 0));
        lblUbicacionesIngresadas.setText("Ubicaciones de pallets a recoger.");
        pnlLeyenda.add(lblUbicacionesIngresadas);
        lblUbicacionesIngresadas.setBounds(50, 50, 240, 20);

        pnlRojo.setBackground(java.awt.Color.red);
        pnlRojo.setBorder(javax.swing.BorderFactory.createLineBorder(new java.awt.Color(0, 0, 0)));

        javax.swing.GroupLayout pnlRojoLayout = new javax.swing.GroupLayout(pnlRojo);
        pnlRojo.setLayout(pnlRojoLayout);
        pnlRojoLayout.setHorizontalGroup(
            pnlRojoLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGap(0, 18, Short.MAX_VALUE)
        );
        pnlRojoLayout.setVerticalGroup(
            pnlRojoLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGap(0, 18, Short.MAX_VALUE)
        );

        pnlLeyenda.add(pnlRojo);
        pnlRojo.setBounds(20, 50, 20, 20);

        pnlVerde.setBackground(java.awt.Color.blue);
        pnlVerde.setBorder(javax.swing.BorderFactory.createLineBorder(new java.awt.Color(0, 0, 0)));

        javax.swing.GroupLayout pnlVerdeLayout = new javax.swing.GroupLayout(pnlVerde);
        pnlVerde.setLayout(pnlVerdeLayout);
        pnlVerdeLayout.setHorizontalGroup(
            pnlVerdeLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGap(0, 18, Short.MAX_VALUE)
        );
        pnlVerdeLayout.setVerticalGroup(
            pnlVerdeLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGap(0, 18, Short.MAX_VALUE)
        );

        pnlLeyenda.add(pnlVerde);
        pnlVerde.setBounds(20, 20, 20, 20);

        getContentPane().add(pnlLeyenda);
        pnlLeyenda.setBounds(10, 470, 360, 80);

        pack();
    }// </editor-fold>//GEN-END:initComponents
    @Override
    public void paint(Graphics g){
        try{
        if (this.esPrimeraVez){
            this.esPrimeraVez=false;
            this.createBufferStrategy(2);
            bfs =this.getBufferStrategy();
        }
        if (bfs != null){
            Graphics g1=bfs.getDrawGraphics();
            super.paint(g1);
            visualHelper.pintarAlmacen(g1, datosAlmacen.getFilas(), datosAlmacen.getRacksXFila(), datosAlmacen.getUbsxrack(), 10,this.getMinimumSize());
            visualHelper.pintarUbicaciones(g1,datosAlmacen.getFilas(), datosAlmacen.getRacksXFila(), datosAlmacen.getUbsxrack(),10,this.getMinimumSize(),this.ordenOptimoUbics);
            visualHelper.pintarEntradas(g1, entradas, datosAlmacen.getFilas(), datosAlmacen.getRacksXFila(), datosAlmacen.getUbsxrack(), 10, this.getMinimumSize());
            visualHelper.pintarMalla(g1,datosAlmacen.getFilas(), datosAlmacen.getRacksXFila(), datosAlmacen.getUbsxrack(),10,this.getMinimumSize());
            visualHelper.pintarRotulosPasillosRacksFilas(g1, datosAlmacen.getFilas(), datosAlmacen.getRacksXFila(), datosAlmacen.getUbsxrack(), 10, this.getMinimumSize());
            bfs.show();
            visualHelper.pintarRutaOptima(g1,datosAlmacen.getFilas(), datosAlmacen.getRacksXFila(), datosAlmacen.getUbsxrack(),10,this.getMinimumSize(),this.ptosRutaOptima,bfs);
        }
        }
        catch(Exception e){
            e.printStackTrace();
            System.out.println("Ocurrió un error al pintar el mapa");
        }
    }

    // Variables declaration - do not modify//GEN-BEGIN:variables
    private javax.swing.JLabel lblTipoPallet1;
    private javax.swing.JLabel lblTitulo;
    private javax.swing.JLabel lblUbicacionesIngresadas;
    private javax.swing.JLabel lblUbicacionesLibres;
    private javax.swing.JPanel pnlLeyenda;
    private javax.swing.JPanel pnlRojo;
    private javax.swing.JPanel pnlVerde;
    // End of variables declaration//GEN-END:variables
}